Many computer systems use separate technologies for main memory and secondary storage. The main memory typically uses a volatile memory technology, such as Dynamic Random Access Memory (DRAM), for example. Since a volatile memory does not retain its contents once power is removed (absent additional components in the computer system such as a battery backup mechanism that can maintain memory contents for a finite period of time with added cost and complexity), the software for the computer system is typically stored in secondary storage that uses a non-volatile memory technology such as Flash memory Solid-State Drives (SSDs) or magnetic Hard Disk Drives (HDDs), for example. As a result of this arrangement, the computer system contains multiple different types of memory, with added cost and complexity.